$(document).ready(function() {   
   filtroDeTabla();   
   clickRenglon();
}); 
$(function(){
    $('#dlg-modal').hide();//oculta el dialogo modal
    $('#contenido-forma').hide();//oculta la forma que contiene la informaciln para el dialogo modal
    $('#confirmar-cambios-modal').hide();//oculta el cialogo modal de confirmacion de cambios
    $('.modificar-modal').bind('click', function(e) {//se le asigna el evento click al boton modificar d ela tabla principal
        e.preventDefault();
        funcionModificar(activo);
        funcionValidar();
    });
    $('.agregar-modal').bind('click', function(e) {//se le asigna el evento click al boton modificar d ela tabla principal
        e.preventDefault();
        funcionAgregar();        
        funcionValidar();
    });
    $('.eliminar-modal').bind('click', function(e) {
        e.preventDefault();
        funcionEliminar(activo);    
    }); 
    
});

////////Seccion Validar Datos//////////
function funcionValidar(){
     $('#forma-modal').validate({ // initialize the plugin
         // Specify the validation rules
        rules: {
            comercial: {
                minlength: 3,
                required: true
            },
            nombre:{
                minlength: 3,
                required: true
            },
            apellidos: "required", 
            razon: "required",
            rfc: "required",
            repre: "required",
            calle: "required", 
            colonia: "required",             
            cp: {
                required: true, 
                digits: true,
                minlength: 5,
                maxlength: 5
            },
            estadoinput: "validaEstado",
            ciudadinput: "validaCiudad",         
            paqinput: "validaPaq",
            tituloinput: "validaTitulo"
        },
            
        tooltip_options:{
            comercial: {  placement: 'top' },
            nombre:{  placement: 'top' },
            apellidos: {  placement: 'top' },
            razon: {  placement: 'top' },
            rfc: {  placement: 'top' },
            repre: {  placement: 'top' },
            calle: {  placement: 'top' },
            colonia: {  placement: 'top' },
            cp: {  placement: 'top' },
            estadoinput: {  placement: 'bottom' },
            ciudadinput: {  placement: 'bottom' },
            tituloinput: {  placement: 'bottom' },
            paqinput: {  placement: 'bottom' },
        },
        // Specify the validation error messages
        messages: {
            comercial: {
                required: "Campo Requerido",
                minlength: "Minimo 3 Caracteres"
            },
            nombre:{
                required: "Campo Requerido",
                minlength: "Minimo 3 Caracteres"
            },
            apellidos: "Campo Requerido",
            razon: "Campo Requerido",
            rfc: "Campo Requerido",
            repre: "Campo Requerido",
            calle: "Campo Requerido",
            colonia: "Campo Requerido",        
            cp: {
                required: "Campo Requerido",
                digits: "Solo Usar Digitos",
                maxlength: "Solo 5 Digitos",
                minlength: "Campo Incompleto"
            },
            estadoinput: "Selecciona Estado",
            ciudadinput: "Selecciona Ciudad",         
            paqinput: "Selecciona Paqueteria",
            tituloinput: "Selecciona Titulo"       
        }
    }); 
    funcionValidarDinamicos();
}
function funcionValidarDinamicos(){
    $(".tel-modal").each(function(){
        $(this).rules("add", {
           required: true,
           minlength: 7,
           messages:{
               required: "Campo Requerido",
               minlength: "Minimo 7 numeros"
           }
        });
        $(this).tooltip({position: "top"});
    });
    $(".correo-modal").each(function(){
        $(this).rules("add", {
           required: true,
           email: true,
           messages:{
               required: "Campo Requerido",
               email: "Debe ser un correo"
           }
        });
        $(this).tooltip({position: "top"});
    });
    $(".empresa-modal").each(function(){
        $(this).rules("add", {
           validaEmpresa: true,
           messages:{
               validaEmpresa: "Campo Requerido"
           }
        }); 
        $(this).tooltip({placement: "bottom"});
    });
}

/////////Seccion Agregar////////////////
////////////////////////////////////////
function funcionAgregar(){
    preparaAgregarModal();
    $('#dlg-modal').bPopup({ 
        speed: 200,
        transition: 'slideDown',onClose: function(){
            cerrandoModal();
        }
    }); 
    $('.aceptar-modal').attr('id','agregar-boton');
    $('.cancelar-modal').bind('click',function(){ 
                $('#dlg-modal').bPopup().close();
            });
    $('#agregar-boton').bind('click',function(){
        $('#borde-int-confirmar').html('<br><br>¿Está seguro que <br><br>desea dar de alta<br> <br>el cliente?'
                                        +'<div class="btn btn-success" id="confirmar-cambios">Agregar</div><div class="btn btn-danger" id="cancelar-cambios">Cancelar</div>');
                if($('#forma-modal').valid()){
                        $('#confirmar-cambios-modal').bPopup({
                            speed: 200,
                            transition: 'slideDown',onClose: function(){
                                $('#cancelar-cambios').unbind('click');
                                $('#confirmar-cambios').unbind('click');
                            }
                        }); 
                        $('#cancelar-cambios').bind('click',function(){ 
                            $('#confirmar-cambios-modal').bPopup().close();
                        });
                        $('#confirmar-cambios').click(function(){
                            agregarCliente();
                        });
                }
                else
                    alert("Verifique los campos");
    });
}
function preparaAgregarModal(){
    $('#dlg-modal #contenido').html($('#contenido-forma').html());
    $('#contenido-forma').html('');
    $('.titulo-modal').html('Agregar Registro');
    $('#forma-modal').addClass('cliente-modal-forma');
    $.post(rutaObtenerFecha,{},function(fecha){
        llenaForma2(fecha);
        agregaEventos();
        $('.aceptar-modal').html('Agregar');
        $('.cancelar-modal').html('Cancelar');
        $('.aceptar-modal').attr('id','agregar-boton');
    });
}
function agregarCliente(){
    
    $('#dlg-modal').bPopup().close();
    $('#confirmar-cambios-modal').bPopup().close();
    $.post(
        rutaAgregar,{
            nombre:$('#dlg-nombre').val(),
            usuario:$('#dlg-usuario').val(),
            correo:$('#dlg-correo').val(),
            tipo:$('#titulo-tipo').text()
        },
        function(nuevo){
            if(nuevo==null){
                alert('El cliente no fue agregado!');
                return;
            }
            tabla.fnAddData( [
                nuevo['id'],
                nuevo['nombre'],
                nuevo['usuario'],
                nuevo['correo'],
                nuevo['tipo']
            ]);
            tabla.$('tr').each(function(){
               $(this).find('td:nth-child(1)').addClass('id-tabla'); 
               $(this).find('td:nth-child(2)').addClass('nombre-tabla'); 
               $(this).find('td:nth-child(3)').addClass('user-tabla'); 
               $(this).find('td:nth-child(3)').addClass('correo-tabla'); 
               $(this).find('td:nth-child(3)').addClass('tipo-tabla'); 
            });
            quitaClickRenglon();
            todos[todos.length] = nuevo;
            alert('Cliente agregado!');
            clickRenglon();
        });
}
////////////////////////////////////////
//////////////Fin Agregar///////////////





/////////Seccion Modificar//////////////
////////////////////////////////////////
function funcionModificar(elemento){
    var id_ele = elemento; // elemento.parent().parent().find('td:first').html();//se obtiene el id del elemento al que se le dio click
    todos.forEach(function(c){
        if(c['id']==id_ele){
            preparaModificarModal(c);
            $('.aceptar-modal').attr('id','modificar-boton');
            $('#dlg-modal').bPopup({ 
                speed: 200,
                transition: 'slideDown',onClose: function(){
                    cerrandoModal();
                }
            }); 
            $('.cancelar-modal').bind('click',function(){ 
                $('#dlg-modal').bPopup().close();
            });
            $('#modificar-boton').bind('click',function(){
                $('#borde-int-confirmar').html('<br><br>¿Está seguro que <br><br>desea guardar los<br> <br>cambios?'
                                                +'<div class="btn btn-success" id="confirmar-cambios">Guardar</div><div class="btn btn-danger" id="cancelar-cambios">Cancelar</div>');
                if($('#forma-modal').valid()){
                    $('#confirmar-cambios-modal').bPopup({ 
                        speed: 200,
                        transition: 'slideDown',onClose: function(){
                            $('#cancelar-cambios').unbind('click');
                            $('#confirmar-cambios').unbind('click');
                        }
                    }); 
                    $('#cancelar-cambios').bind('click',function(){ 
                        $('#confirmar-cambios-modal').bPopup().close();
                    });
                    $('#confirmar-cambios').click(function(){
                        modificarCliente();
                    });
                }
            });
            return;
        }
    });
}
function preparaModificarModal(c){
    $('#dlg-modal #contenido').html($('#contenido-forma').html());
    $('#contenido-forma').html('');
    $('.titulo-modal').html('Modificar Registro');
    $('#forma-modal').addClass('cliente-modal-forma');
    llenaForma(c);
    agregaEventos();
    $('#titulo-tipo').attr('data-toggle','dropdown');
    $('.aceptar-modal').show();
    $('.cancelar-modal').show();
    $('.aceptar-modal').html('Guardar');
    $('.cancelar-modal').html('Cancelar');
}
function modificarCliente(){
    
    $('#dlg-modal').bPopup().close();
    $('#confirmar-cambios-modal').bPopup().close();
    $.post(
        rutaModificar,{
            id:$('#dlg-id').val(),
            nombre:$('#dlg-nombre').val(),
            usuario:$('#dlg-usuario').val(),
            correo:$('#dlg-correo').val(),
            tipo:$('#titulo-tipo').text()
        },
        function(){//////////////////////////////////aqui mero
            for(var i = 0;i<todos.length;i++){
                if(todos[i]['id']==elemento['id']){
                    todos[i] = elemento;
                    break;
                }
            }
            if(elemento['distribuidor']!=0)
                elemento['distribuidor']='Si';
            else
                elemento['distribuidor']='No';
            if(elemento['persona']!=0)
                elemento['nombre_comercial']=elemento['nombre']+' '+elemento['apellidos'];
            var indice = tabla.fnGetPosition(tabla.$('tr.seleccionado')[0]);
            tabla.fnUpdate([
                elemento['id'],
		elemento['nombre_comercial'],
		elemento['distribuidor']],
                indice
            );
            $('.dos-botones .btn').attr('disabled','disabled');
            alert('Cliente modificado!');
        });
}
////////////////////////////////////////
/////////////Fin Modificar//////////////



/////////Seccion Eliminar///////////////
////////////////////////////////////////
function funcionEliminar(elemento){
    var id_ele = elemento;//elemento.parent().parent().find('td:first').html();//se obtiene el id del elemento al que se le dio click
    $('#borde-int-confirmar').html('<br><br>¿Está seguro que <br><br>desea eliminar el<br> <br>registro con id '+ id_ele +'?<br><br>'
                                    +'El registro no se podrá recuperar'
                                    +'<div class="btn btn-success" id="confirmar-cambios">Aceptar</div><div class="btn btn-danger" id="cancelar-cambios">Cancelar</div>');
    $('#confirmar-cambios-modal').bPopup({ 
        speed: 200,
        transition: 'slideDown',onClose: function(){
            $('#cancelar-cambios').unbind('click');
            $('#confirmar-cambios').unbind('click');
        }
    }); 
    $('#cancelar-cambios').bind('click',function(){ 
        $('#confirmar-cambios-modal').bPopup().close();
    });
    $('#confirmar-cambios').click(function(){
        eliminarCliente(id_ele);
    });
}
function eliminarCliente(id){
    $('#confirmar-cambios-modal').bPopup().close();
    $.post(
        rutaEliminar,
        {id: id},
        function(elemento){
            if(elemento['eliminado']==false){
                alert('El cliente no fue eliminado!');
                return;
            }
            for(var i = 0;i<todos.length;i++){
                if(todos[i]['id']==elemento['id']){
                    todos.splice(i,1);
                    break;
                }
            }
            tabla.fnDeleteRow( tabla.$('tr.seleccionado')[0]);
            $('.dos-botones .btn').attr('disabled','disabled');
            alert('Cliente eliminado!');
        });
}
////////////////////////////////////////
/////////////Fin Eliminar///////////////


///llenado de informacion y eventos///
//////////////////////////////////////
function llenaForma(c){
    $('#forma-modal').addClass('form-inline');
    $('#dlg-id').val(c['id']);
    $('#dlg-id').attr('readonly','true');
    $('#dlg-fecha').val(c['fecha_alta']);
    $('#dlg-nombre').val(c['nombre']);
    $('#dlg-usuario').val(c['usuario']);
    $('#dlg-correo').val(c['correo']);
    $('#titulo-tipo').html(c['tipo']+'<span class="caret"></span>');
    $('.dropdown').removeClass('open');
}
function llenaForma2(fecha){
    $('#forma-modal').addClass('form-inline');
    $('#dlg-id').val('Nuevo');
   $('#titulo-tipo').html('&nbsp<span class="caret"></span>');
    $('.dropdown').removeClass('open');
}
function vaciaForma(){
    $('#forma-modal').removeClass('cliente-modal-forma');
    $('#forma-modal').removeClass('form-inline');
    $('#dlg-id').val('');
    $('#dlg-fecha').val('');
    $('#dlg-nombre').val('');
    $('#dlg-usuario').val('');
    $('#dlg-correo').val('');
    $('.aceptar-modal').removeAttr('id');
    $('#dlg-distri').removeAttr('disabled');
    $('input').removeAttr('readonly');
}

function agregaEventos(){
    $('.drop-opcion-tipo').bind('click', function(e) {
        e.preventDefault();
        $('#titulo-tipo').html($(this).html()+'<span class="caret"></span>');
        $("#forma-modal").validate().element("#tipoinput");
    });
}
function cerrandoModal(){
    $('.tooltip').hide();
    $('#contenido-forma').html($('#dlg-modal #contenido').html());
    $('#dlg-modal #contenido').html('');
    vaciaForma();
}
/////////////////////////////////////////
/////////////////////////////////////////
//Fin llenado de informacion  y eventos//
function filtroDeTabla(){
    tabla = $("#tabla-principal").dataTable({
        "sPaginationType": "full_numbers",
        "oLanguage": {
            "sSearch": "Filtrar con el texto: _INPUT_",
            "sLengthMenu": "Registros visibles: _MENU_",
            "oPaginate": {
                "sNext": "Siguiente",
                "sPrevious": "Anterior",
                "sFirst": "Primera",
                "sLast": "Ultima"
            },
            "sInfo": "Mostrando   _START_ a _END_   de un total de _TOTAL_ registros",
            "sInfoFiltered": "(filtrados de _MAX_ registros totales)"
        }
    });
    tabla.columnFilter({
        aoColumns: [{ type: "number" },
                    { type: "text" },
                    { type: "text"},
                    { type: "text"},
                    { type: "text"}]
    });
}
function clickRenglon(){
    tabla.$('tr').on('click',function(){
        $('#tabla-principal tr.seleccionado').removeClass('seleccionado');
        $(this).addClass('seleccionado');
        activo = $(this).find('.id-tabla').text();
        $('#seleccion').text('Registro '+activo);
        $('.dos-botones .btn').removeAttr('disabled');
        //itabla = oTable.fnGetPosition(this);
    });
    tabla.$('tr').on('dblclick',function(){
        $('#tabla-principal tr.seleccionado').removeClass('seleccionado');
        $(this).addClass('seleccionado');
        activo = $(this).find('.id-tabla').text();
        $('#seleccion').text('Registro '+activo);
        $('.dos-botones .btn').removeAttr('disabled');
        //itabla = oTable.fnGetPosition(this);
        funcionModificar(activo);
    });
}
function quitaClickRenglon()
{
    tabla.$('tr').off();
}